Gaussian Copula Generation

Summary

Gaussian copula generation is a way to generate multivariate synthetic data when each variable can have its own marginal distribution, but the dependency between variables is controlled by a Gaussian correlation structure.

The key idea:

  1. sample correlated Gaussian variables
  2. convert them to uniform variables by the Gaussian CDF
  3. convert each uniform variable to the target distribution by that variable's inverse CDF

So the Gaussian copula separates:

  • marginal distribution: what each variable looks like alone
  • dependency structure: how variables move together

What is a copula

A copula is a function/model that links individual marginal distributions into a joint multivariate distribution. In simple terms, it describes the dependency between variables separately from what each variable's own distribution looks like.

What problem does it solve

Often we want to simulate variables that are dependent, but not all normally distributed.

Example:

A plain multivariate normal model is too restrictive because it assumes all variables are Gaussian. A Gaussian copula lets us keep flexible marginals while still specifying a correlation matrix.

Intuition

Think of Gaussian copula as generating the rank-level dependency first.

So if two hidden Gaussian variables are positively correlated, high percentiles in one variable tend to appear with high percentiles in the other variable.

Generation steps

Suppose we want to generate d variables.

1. Specify a correlation matrix

Choose a valid correlation matrix R:

R=(1ρ12⋯ρ1dρ211⋯ρ2d⋮⋮⋱⋮ρd1ρd2⋯1)

This controls the dependency structure. See Covariance & Correlation and Covariance Structure.

2. Sample from a multivariate normal distribution

Generate latent Gaussian variables:

Z=(Z1,...,Zd)∼N(0,R)

Here, each Zj is standard normal, but the variables are correlated according to R.

3. Convert Gaussian values to uniform values

Apply the standard normal CDF Φ to each dimension:

Uj=Φ(Zj)

Then:

Uj∼Uniform(0,1)

The values are now percentiles, but still dependent.

4. Convert uniforms to target marginals

For each target variable with CDF Fj, use the inverse CDF:

Xj=Fj−1(Uj)

Then Xj follows the desired marginal distribution.

Example:

Compact formula

The full transformation is:

Xj=Fj−1(Φ(Zj)),Z∼N(0,R)

where:

Why it is useful

Limitations

Important

Gaussian copula is not saying the observed variables are Gaussian. It only uses a hidden Gaussian layer to create dependency.

Related Notes